layui.use(["laytp", 'jquery', 'upload'], function () {
    var $ = layui.jquery;
    var upload = layui.upload;
    const funController = {};
    //静态页面地址前缀
    window.htmlPrefix = facade.compatibleHtmlPath("/admin/questions/");
    //后端接口地址前缀
    window.apiPrefix  = facade.compatibleApiRoute("/admin.questions/");
    // 试卷地址
    window.zujuanPrefix  = facade.compatibleApiRoute("/admin.exam.papers/");

    // 确保 DOM 加载完成
    $(function () {
        // 检查容器是否存在，如果不存在则创建
        var toolTempContainer = $('.layui-table-tool-temp');
        if (toolTempContainer.length === 0) {
            $('.layui-table-tool').append('<div class="layui-table-tool-temp"></div>');
            toolTempContainer = $('.layui-table-tool-temp');
        }

        // 创建并插入上传按钮（增加图标，设置高度为34px）
        var uploadButton = $('<button class="laytp-btn laytp-btn-normal laytp-btn-md" id="uploadBtn"><i class="layui-icon layui-icon-upload"></i>导入试题</button>');
        toolTempContainer.append(uploadButton);

        // 增加下载示例按钮
        var downloadButton = $('<button style="margin-left: 10px" class="layui-btn layui-btn-primary layui-border-blue" id="downloadBtn"><i class="layui-icon layui-icon-download"></i>下载上传试题示例文件</button>');
        toolTempContainer.append(downloadButton);

        // 初始化下载示例按钮的点击事件
        $('#downloadBtn').on('click', function () {
            window.location.href = '/upload/import_question_demo.xlsx';
        });

        // 初始化上传组件
        upload.render({
            elem: '#uploadBtn' // 绑定元素
            ,url: '/admin.questions/importQuestionData' // 上传接口
            ,accept: 'file' // 允许上传的文件类型
            ,exts: 'xlsx|xls|cvs' // 限制文件格式为Excel
            ,size: 10240 // 限制文件大小为10M
            ,before: function(obj){
                // 文件上传前的回调
                layer.load(); // 显示加载动画
            }
            ,done: function(res){
                // 上传成功后的回调
                layer.closeAll('loading'); // 关闭加载动画
                if(res.code === 0){
                    layer.msg('导入成功', {icon: 1});
                    // 刷新表格数据
                    layui.table.reload('laytp-table');
                } else {
                    layer.msg('导入失败：' + res.msg, {icon: 2});
                }
            }
            ,error: function(){
                // 上传失败后的回调
                layer.closeAll('loading'); // 关闭加载动画
                layer.msg('上传失败，请稍后重试', {icon: 2});
            }
        });
    });
    //表格渲染
    funController.tableRender = function (where, page) {
        layui.table.render({
            elem: "#laytp-table"
            , limit: facade.getLimit('/admin/questions/')
            , id: "laytp-table"
            , url: facade.url("/admin.questions/index",{paging:1})
            , toolbar: "#default-toolbar"
            , defaultToolbar: [{
                title: '刷新',
                layEvent: 'refresh',
                icon: 'layui-icon-refresh',
            }, 'filter', 'print', 'exports']
            , where: where
            , method: "GET"
            , cellMinWidth: 120
            , skin: 'line'
            , loading: false
            , page: {
                curr: page
            }
            , height: 'full-30'
            , parseData: function (res) { //res 即为原始返回的数据
                layui.laytpTable.setLimit('/admin/questions/', res.data.per_page);
                return facade.parseTableData(res, true);
            }
            , cols: [[
                {type:'checkbox',fixed:'left'}
				,{field:'id',title:'ID',align:'center',width:80,fixed:'left'}
				,{field:'type',title:'题型',align:'center',templet:function(d){
                    return laytp.tableFormatter.status('type',d.type,{"value":["1","2","3","4","5"],"text":["单选题","多选题","判断题","简答题","填空题"]});
                }}
				,{field:'title',title:'题干',align:'center'}
				,{field:'difficulty',title:'难度',align:'center',templet:function(d){
                    return laytp.tableFormatter.status('difficulty',d.difficulty,{"value":["1","2","3"],"text":["简单","中等","困难"]});
                }}
				,{field:'category_name',title:'分类',align:'center'}
				,{field:'course_name',title:'课程名称',align:'center'}
				,{field:'user_name',title:'创建人',align:'center'}
				,{field:'status',title:'状态',align:'center',templet:function(d){
                    return laytpForm.tableForm.switch("status", d, {
                        "open": {"value": 1, "text": "启用"},
                        "close": {"value": 0, "text": "禁用"}
                    });
                }}
				,{field:'create_time',title:'创建时间',align:'center'}
				,{field:'update_time',title:'更新时间',align:'center'}
				,{field:'org_name',title:'组织',align:'center'}
                ,{field:'operation',title:'操作',align:'center',toolbar:'#default-bar',width:150,fixed:'right'}
            ]]
        });

        //监听数据表格顶部左侧按钮点击事件
        layui.table.on("toolbar(laytp-table)", function (obj) {
            //默认按钮点击事件，包括添加按钮和回收站按钮
            var defaultTableToolbar = layui.context.get("defaultTableToolbar");
            if (defaultTableToolbar.indexOf(obj.event) !== -1) {
                laytp.tableToolbar(obj);
            } else {
                //自定义按钮点击事件
                switch(obj.event){
                    case "zujuan":
                        let checkData, checkStatus;
                        checkStatus = layui.table.checkStatus(obj.config.id);
                        checkData = checkStatus.data;
                        if (checkData.length === 0) {
                            facade.error("请选择组卷数据");
                            return false;
                        }
                        let ids = [];
                        let key;
                        for (key in checkData) {
                            if (checkData[key].status != 1) {
                                facade.error("请不要选择未启用状态的试题进行组卷");
                                return false;
                            }
                            ids.push(checkData[key].id);
                        }
                        // 获取试卷列表
                        $.ajax({
                            url: window.zujuanPrefix + "index",
                            method: "GET",
                            success: function(res) {
                                if (res.code === 0) {
                                    let paperList = res.data;
                                    let options = '<option value="0">请选择试卷</option>';
                                    paperList.forEach(function(paper) {
                                        options += `<option value="${paper.id}">${paper.name}</option>`;
                                    });

                                    // 弹出确认框并添加下拉选项
                                    facade.popupConfirm({
                                        text:  `<select id="paperSelect">${options}</select>`,
                                        route: window.zujuanPrefix + "addQuestions",
                                        data: {
                                            ids: ids,
                                            paper_id: function() {
                                                return $('#paperSelect').val(); // 确保在提交时获取最新的选中值
                                            }
                                        }
                                    });
                                } else {
                                    facade.error("获取试卷列表失败：" + res.msg);
                                }
                            },
                            error: function() {
                                facade.error("获取试卷列表失败，请稍后重试");
                            }
                        });

                        break;

                }
            }
        });

        //监听数据表格[操作列]按钮点击事件
        layui.table.on("tool(laytp-table)", function (obj) {
            var defaultTableTool = layui.context.get("defaultTableTool");
            if (defaultTableTool.indexOf(obj.event) !== -1) {
                laytp.tableTool(obj);
            } else {
                // //自定义按钮点击事件
                // switch(obj.event){
                // //自定义按钮点击事件
                // case "":
                //
                //     break;
                // }
            }
        });

        //监听表头排序事件
        layui.table.on('sort(laytp-table)', function(obj){
            layui.table.reloadData('laytp-table', {
                initSort: obj //记录初始排序，如果不设的话，将无法标记表头的排序状态。
                , where: {
                    "order_param" : {
                        "field" : obj.field,
                        "type" : obj.type
                    }
                }
            });
        });
    };

    funController.tableRender();

    window.funController = funController;
});

